package com.xiaolun.netty.protocoltcp;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

import java.nio.charset.Charset;

public class MyClientHandler extends SimpleChannelInboundHandler<MessageProtocol> {

	private int count;

	@Override
	public void channelActive(ChannelHandlerContext ctx) throws Exception {
		//使用客户端发送10条数据 "今天天气冷，吃火锅" 编号
		for (int i = 0; i < 5; i++) {
			String mes = "今天天气冷，吃火锅";
			byte[] content = mes.getBytes(Charset.forName("utf-8"));
			int length = mes.getBytes(Charset.forName("utf-8")).length;
			//创建协议包对象
			MessageProtocol messageProtocol = new MessageProtocol();
			messageProtocol.setLen(length);
			messageProtocol.setContent(content);
			ctx.writeAndFlush(messageProtocol);
		}
	}

	@Override
	protected void channelRead0(ChannelHandlerContext ctx, MessageProtocol msg) throws Exception {
		int len = msg.getLen();
		byte[] content = msg.getContent();
		System.out.println("客户端接收到消息如下");
		System.out.println("长度=" + len);
		System.out.println("内容=" + new String(content, Charset.forName("utf-8")));
		System.out.println("客户端接收消息数量=" + (++this.count));
	}

	@Override
	public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
		System.out.println("异常消息=" + cause.getMessage());
		ctx.close();
	}
}
